/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_depthwise_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/depthwise_conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using InputBackpropWindow1Stride2 =
    sycldnn::depthwise_conv2d::WindowStrideTest<Pair, 1, 2>;
TYPED_TEST_SUITE(InputBackpropWindow1Stride2, GTestTypePairs);
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0., 0., 17., 0., 23.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0., 0., 17., 0., 23.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0.,   70., 0.,  0.,
                                         0.,  110., 0.,  150.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0.,   70., 0.,  0.,
                                         0.,  110., 0.,  150.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4., 0., 0., 3.,  8., 0., 0., 0.,
                                         0., 0., 0., 5., 12., 0., 0., 7., 16.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4., 0., 0., 3.,  8., 0., 0., 0.,
                                         0., 0., 0., 5., 12., 0., 0., 7., 16.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25., 0., 0., 17., 53.,
                                         0.,  0.,  0., 0., 0.,  0.,
                                         29., 81., 0., 0., 41., 109.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25., 0., 0., 17., 53.,
                                         0.,  0.,  0., 0., 0.,  0.,
                                         29., 81., 0., 0., 41., 109.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  174., 0., 0., 110., 382.,
                                         0.,   0.,   0., 0., 0.,   0.,
                                         190., 590., 0., 0., 270., 798.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  174., 0., 0., 110., 382.,
                                         0.,   0.,   0., 0., 0.,   0.,
                                         190., 590., 0., 0., 270., 798.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0., 0., 0., 0., 29., 81.,  149., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 137., 237., 353., 0., 0., 0., 0., 77., 193., 325., 473.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0., 0., 0., 0., 29., 81.,  149., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 137., 237., 353., 0., 0., 0., 0., 77., 193., 325., 473.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         0., 0., 3., 0., 4., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         0., 0., 3., 0., 4., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0.,  0.,
                                         0., 0., 17., 0., 23., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0.,  0.,
                                         0., 0., 17., 0., 23., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0., 70.,  0., 0.,   0.,
                                         0.,  0., 110., 0., 150., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0., 70.,  0., 0.,   0.,
                                         0.,  0., 110., 0., 150., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4.,  0., 0., 3., 8.,  0., 0.,
                                         0., 0.,  0., 0., 0., 0.,  0., 0.,
                                         5., 12., 0., 0., 7., 16., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4.,  0., 0., 3., 8.,  0., 0.,
                                         0., 0.,  0., 0., 0., 0.,  0., 0.,
                                         5., 12., 0., 0., 7., 16., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25., 0., 0., 17., 53.,  0., 0.,
                                         0.,  0.,  0., 0., 0.,  0.,   0., 0.,
                                         29., 81., 0., 0., 41., 109., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25., 0., 0., 17., 53.,  0., 0.,
                                         0.,  0.,  0., 0., 0.,  0.,   0., 0.,
                                         29., 81., 0., 0., 41., 109., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 174., 0., 0., 110., 382., 0., 0., 0.,   0.,   0., 0.,
      0.,  0.,   0., 0., 190., 590., 0., 0., 270., 798., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 174., 0., 0., 110., 382., 0., 0., 0.,   0.,   0., 0.,
      0.,  0.,   0., 0., 190., 590., 0., 0., 270., 798., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 25., 61., 113., 0.,  0.,   0.,   0.,   29., 81.,  149., 233.,
      0., 0.,  0.,  0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0., 0.,  0.,  0.,   0.,  0.,   0.,   0.,   53., 137., 237., 353.,
      0., 0.,  0.,  0.,   77., 193., 325., 473., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 25., 61., 113., 0.,  0.,   0.,   0.,   29., 81.,  149., 233.,
      0., 0.,  0.,  0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0., 0.,  0.,  0.,   0.,  0.,   0.,   0.,   53., 137., 237., 353.,
      0., 0.,  0.,  0.,   77., 193., 325., 473., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0., 0., 190., 590.,
      1118., 1774., 0.,    0.,    0.,    0.,    0., 0., 0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0., 0., 0.,   0.,
      0.,    0.,    350.,  1006., 1790., 2702., 0., 0., 0.,   0.,
      510.,  1422., 2462., 3630., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0., 0., 190., 590.,
      1118., 1774., 0.,    0.,    0.,    0.,    0., 0., 0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0., 0., 0.,   0.,
      0.,    0.,    350.,  1006., 1790., 2702., 0., 0., 0.,   0.,
      510.,  1422., 2462., 3630., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0., 0.,
                                         0., 0., 0., 4., 0., 5., 0., 6., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0., 0.,
                                         0., 0., 0., 4., 0., 5., 0., 6., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0.,
                                         0.,  0., 0.,  0., 0.,  0.,
                                         23., 0., 29., 0., 35., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0.,
                                         0.,  0., 0.,  0., 0.,  0.,
                                         23., 0., 29., 0., 35., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 110., 0.,
                                         0.,   0., 0.,   0., 0.,   0.,
                                         150., 0., 190., 0., 230., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 110., 0.,
                                         0.,   0., 0.,   0., 0.,   0.,
                                         150., 0., 190., 0., 230., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3., 8.,  0., 0., 5.,  12., 0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0.,
      7., 16., 0., 0., 9., 20., 0., 0., 11., 24., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3., 8.,  0., 0., 5.,  12., 0., 0.,
      0., 0.,  0., 0., 0., 0.,  0., 0., 0.,  0.,  0., 0.,
      7., 16., 0., 0., 9., 20., 0., 0., 11., 24., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65., 165., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65., 165., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798., 0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798., 0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 9.,  16., 0.,  0.,  0.,  0.,  5., 12., 21., 32., 0.,  0.,  0.,
      0., 9., 20., 33., 48., 0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  13., 28., 45., 64., 0.,  0., 0.,  0.,  17., 36., 57., 80.,
      0., 0., 0.,  0.,  21., 44., 69., 96., 0., 0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 9.,  16., 0.,  0.,  0.,  0.,  5., 12., 21., 32., 0.,  0.,  0.,
      0., 9., 20., 33., 48., 0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  13., 28., 45., 64., 0.,  0., 0.,  0.,  17., 36., 57., 80.,
      0., 0., 0.,  0.,  21., 44., 69., 96., 0., 0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0.,   0.,   0.,   0.,   29.,  81.,  149., 233.,
      0.,  0.,   0.,   0.,   53.,  137., 237., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 193., 325., 473., 0.,   0.,   0.,   0.,   101., 249., 413., 593.,
      0.,  0.,   0.,   0.,   125., 305., 501., 713., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0.,   0.,   0.,   0.,   29.,  81.,  149., 233.,
      0.,  0.,   0.,   0.,   53.,  137., 237., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 193., 325., 473., 0.,   0.,   0.,   0.,   101., 249., 413., 593.,
      0.,  0.,   0.,   0.,   125., 305., 501., 713., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0.,    0.,   190.,
      590.,  1118., 1774., 0.,    0.,    0.,    0.,    350., 1006.,
      1790., 2702., 0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    510.,  1422., 2462., 3630., 0.,   0.,
      0.,    0.,    670.,  1838., 3134., 4558., 0.,    0.,   0.,
      0.,    830.,  2254., 3806., 5486., 0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0.,    0.,   190.,
      590.,  1118., 1774., 0.,    0.,    0.,    0.,    350., 1006.,
      1790., 2702., 0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    510.,  1422., 2462., 3630., 0.,   0.,
      0.,    0.,    670.,  1838., 3134., 4558., 0.,    0.,   0.,
      0.,    830.,  2254., 3806., 5486., 0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4.,  0., 0., 3., 8.,  0., 0.,
                                         0., 0.,  0., 0., 5., 12., 0., 0.,
                                         7., 16., 0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 4.,  0., 0., 3., 8.,  0., 0.,
                                         0., 0.,  0., 0., 5., 12., 0., 0.,
                                         7., 16., 0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25.,  0., 0., 17., 53., 0., 0.,
                                         0.,  0.,   0., 0., 29., 81., 0., 0.,
                                         41., 109., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  25.,  0., 0., 17., 53., 0., 0.,
                                         0.,  0.,   0., 0., 29., 81., 0., 0.,
                                         41., 109., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382., 0., 0., 0., 0., 0., 0.,
      190., 590., 0., 0., 270., 798., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382., 0., 0., 0., 0., 0., 0.,
      190., 590., 0., 0., 270., 798., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5., 12., 21., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 9., 20., 33., 48., 0., 0., 0., 0.,
      13., 28., 45., 64., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5., 12., 21., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 9., 20., 33., 48., 0., 0., 0., 0.,
      13., 28., 45., 64., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0., 0., 0., 0., 29., 81.,  149., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 137., 237., 353., 0., 0., 0., 0., 77., 193., 325., 473.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0., 0., 0., 0., 29., 81.,  149., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 137., 237., 353., 0., 0., 0., 0., 77., 193., 325., 473.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3., 8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7., 16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3., 8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7., 16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25., 0., 0., 17., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 81., 0., 0., 41., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25., 0., 0., 17., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 81., 0., 0., 41., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590., 0., 0., 270., 798., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590., 0., 0., 270., 798., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9., 20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 25., 61.,  113., 0.,   0., 0.,  0.,   29.,  81.,  149., 233., 0.,
      0., 0.,  0.,   0.,   0.,   0., 0.,  0.,   0.,   0.,   0.,   0.,   0.,
      0., 0.,  0.,   0.,   0.,   0., 53., 137., 237., 353., 0.,   0.,   0.,
      0., 77., 193., 325., 473., 0., 0.,  0.,   0.,   0.,   0.,   0.,   0.,
      0., 0.,  0.,   0.,   0.,   0., 0.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 25., 61.,  113., 0.,   0., 0.,  0.,   29.,  81.,  149., 233., 0.,
      0., 0.,  0.,   0.,   0.,   0., 0.,  0.,   0.,   0.,   0.,   0.,   0.,
      0., 0.,  0.,   0.,   0.,   0., 53., 137., 237., 353., 0.,   0.,   0.,
      0., 77., 193., 325., 473., 0., 0.,  0.,   0.,   0.,   0.,   0.,   0.,
      0., 0.,  0.,   0.,   0.,   0., 0.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846., 0., 0., 0., 0.,   190.,  590.,  1118.,
      1774., 0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    350.,
      1006., 1790., 2702., 0.,   0., 0., 0., 510., 1422., 2462., 3630.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846., 0., 0., 0., 0.,   190.,  590.,  1118.,
      1774., 0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    350.,
      1006., 1790., 2702., 0.,   0., 0., 0., 510., 1422., 2462., 3630.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0.,
                                         0., 0., 0., 0., 4., 0., 5., 0.,
                                         6., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0.,
                                         0., 0., 0., 0., 4., 0., 5., 0.,
                                         6., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0., 0.,  0.,
                                         0.,  0., 0.,  0., 23., 0., 29., 0.,
                                         35., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0., 0.,  0.,
                                         0.,  0., 0.,  0., 23., 0., 29., 0.,
                                         35., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70., 0., 110., 0., 0.,   0.,
                                         0.,   0., 0.,  0., 150., 0., 190., 0.,
                                         230., 0., 0.,  0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70., 0., 110., 0., 0.,   0.,
                                         0.,   0., 0.,  0., 150., 0., 190., 0.,
                                         230., 0., 0.,  0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3., 8., 0., 0., 5., 12., 0., 0., 0., 0.,  0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 7., 16., 0., 0., 9., 20., 0., 0.,
      11., 24., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3., 8., 0., 0., 5., 12., 0., 0., 0., 0.,  0., 0.,
      0.,  0.,  0., 0., 0., 0., 0., 0., 7., 16., 0., 0., 9., 20., 0., 0.,
      11., 24., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65., 165., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65., 165., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798., 0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174., 0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798., 0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      9.,  20., 33., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 28., 45., 64., 0., 0., 0., 0., 17., 36., 57., 80., 0., 0., 0., 0.,
      21., 44., 69., 96., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      9.,  20., 33., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 28., 45., 64., 0., 0., 0., 0., 17., 36., 57., 80., 0., 0., 0., 0.,
      21., 44., 69., 96., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0.,   0.,   0.,   0.,   29.,  81.,  149., 233.,
      0.,  0.,   0.,   0.,   53.,  137., 237., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 193., 325., 473., 0.,   0.,   0.,   0.,   101., 249., 413., 593.,
      0.,  0.,   0.,   0.,   125., 305., 501., 713., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  61.,  113., 0.,   0.,   0.,   0.,   29.,  81.,  149., 233.,
      0.,  0.,   0.,   0.,   53.,  137., 237., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 193., 325., 473., 0.,   0.,   0.,   0.,   101., 249., 413., 593.,
      0.,  0.,   0.,   0.,   125., 305., 501., 713., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446., 846., 0.,   0.,    0.,    0.,    190.,  590.,
      1118., 1774., 0.,   0.,   0.,   0.,    350.,  1006., 1790., 2702.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    510.,  1422.,
      2462., 3630., 0.,   0.,   0.,   0.,    670.,  1838., 3134., 4558.,
      0.,    0.,    0.,   0.,   830., 2254., 3806., 5486., 0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446., 846., 0.,   0.,    0.,    0.,    190.,  590.,
      1118., 1774., 0.,   0.,   0.,   0.,    350.,  1006., 1790., 2702.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    510.,  1422.,
      2462., 3630., 0.,   0.,   0.,   0.,    670.,  1838., 3134., 4558.,
      0.,    0.,    0.,   0.,   830., 2254., 3806., 5486., 0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.,
                                         0., 0., 0., 5., 0., 6., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.,
                                         0., 0., 0., 5., 0., 6., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0.,
      9., 20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0.,
      9., 20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 0., 0., 0., 0.,
      29., 81.,  0., 0., 41., 109., 0., 0., 0., 0., 0., 0.,
      53., 137., 0., 0., 65., 165., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 0., 0., 0., 0.,
      29., 81.,  0., 0., 41., 109., 0., 0., 0., 0., 0., 0.,
      53., 137., 0., 0., 65., 165., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 9.,  16., 0.,  0.,  0.,  0., 5., 12., 21., 32., 0.,  0.,  0.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0., 9.,  20., 33., 48., 0.,  0.,
      0., 0., 13., 28., 45., 64., 0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  17., 36., 57., 80., 0., 0., 0.,  0.,  21., 44., 69., 96.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 9.,  16., 0.,  0.,  0.,  0., 5., 12., 21., 32., 0.,  0.,  0.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0., 9.,  20., 33., 48., 0.,  0.,
      0., 0., 13., 28., 45., 64., 0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,
      0., 0., 0.,  17., 36., 57., 80., 0., 0., 0.,  0.,  21., 44., 69., 96.,
      0., 0., 0.,  0.,  0.,  0.,  0.,  0., 0., 0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0., 0., 0., 0., 29.,  81.,  149., 233.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      53.,  137., 237., 353., 0., 0., 0., 0., 77.,  193., 325., 473.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      101., 249., 413., 593., 0., 0., 0., 0., 125., 305., 501., 713.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0., 0., 0., 0., 29.,  81.,  149., 233.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      53.,  137., 237., 353., 0., 0., 0., 0., 77.,  193., 325., 473.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      101., 249., 413., 593., 0., 0., 0., 0., 125., 305., 501., 713.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      670., 1838., 3134., 4558., 0., 0., 0., 0., 830., 2254., 3806., 5486.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  446.,  846.,  0., 0., 0., 0., 190., 590.,  1118., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 1006., 1790., 2702., 0., 0., 0., 0., 510., 1422., 2462., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      670., 1838., 3134., 4558., 0., 0., 0., 0., 830., 2254., 3806., 5486.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.,
                                         5., 0., 6., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.,
                                         5., 0., 6., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9., 20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9., 20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 81.,  0., 0., 41., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53., 137., 0., 0., 65., 165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 81.,  0., 0., 41., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53., 137., 0., 0., 65., 165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 36., 57., 80., 0., 0., 0., 0., 21., 44., 69., 96., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,  16., 0., 0., 0., 0., 5.,  12., 21., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  20., 33., 48., 0., 0., 0., 0., 13., 28., 45., 64., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 36., 57., 80., 0., 0., 0., 0., 21., 44., 69., 96., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,   0.,   0.,   29., 81.,  149., 233.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   53., 137., 237., 353.,
      0.,   0.,   0.,   0.,   77.,  193., 325., 473., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   101., 249., 413., 593., 0.,  0.,   0.,   0.,
      125., 305., 501., 713., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,   0.,   0.,   29., 81.,  149., 233.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   53., 137., 237., 353.,
      0.,   0.,   0.,   0.,   77.,  193., 325., 473., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   101., 249., 413., 593., 0.,  0.,   0.,   0.,
      125., 305., 501., 713., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846., 0., 0., 0.,   0.,    190.,  590.,  1118.,
      1774., 0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    350.,
      1006., 1790., 2702., 0.,   0., 0., 0.,   510.,  1422., 2462., 3630.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    670.,  1838.,
      3134., 4558., 0.,    0.,   0., 0., 830., 2254., 3806., 5486., 0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846., 0., 0., 0.,   0.,    190.,  590.,  1118.,
      1774., 0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    350.,
      1006., 1790., 2702., 0.,   0., 0., 0.,   510.,  1422., 2462., 3630.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    670.,  1838.,
      3134., 4558., 0.,    0.,   0., 0., 830., 2254., 3806., 5486., 0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0., 3., 0., 0., 0., 0., 0., 0., 0., 4., 0., 5., 0., 6., 0.,
      0., 0., 0., 0., 0., 0., 7., 0., 8., 0., 9., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0., 3., 0., 0., 0., 0., 0., 0., 0., 4., 0., 5., 0., 6., 0.,
      0., 0., 0., 0., 0., 0., 7., 0., 8., 0., 9., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0., 0., 0., 0., 0., 0.,
      23., 0., 29., 0., 35., 0., 0., 0., 0., 0., 0., 0.,
      41., 0., 47., 0., 53., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0., 0., 0., 0., 0., 0.,
      23., 0., 29., 0., 35., 0., 0., 0., 0., 0., 0., 0.,
      41., 0., 47., 0., 53., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 0.,  0.,  3.,  8., 0., 0.,  5.,  12., 0.,  0.,  0.,  0., 0.,
      0., 0., 0.,  0.,  0.,  0., 0., 0.,  0.,  7.,  16., 0.,  0.,  9., 20.,
      0., 0., 11., 24., 0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0.,  13., 28., 0., 0., 15., 32., 0.,  0.,  17., 36., 0., 0.,
      0., 0., 0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 0.,  0.,  3.,  8., 0., 0.,  5.,  12., 0.,  0.,  0.,  0., 0.,
      0., 0., 0.,  0.,  0.,  0., 0., 0.,  0.,  7.,  16., 0.,  0.,  9., 20.,
      0., 0., 11., 24., 0.,  0., 0., 0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,
      0., 0., 0.,  13., 28., 0., 0., 15., 32., 0.,  0.,  17., 36., 0., 0.,
      0., 0., 0.,  0.,  0.,  0., 0., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29.,  81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65.,  165., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.,
      77., 193., 0., 0., 89., 221., 0., 0., 101., 249., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0., 0., 17., 53.,  0., 0., 29.,  81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.,
      41., 109., 0., 0., 53., 137., 0., 0., 65.,  165., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.,
      77., 193., 0., 0., 89., 221., 0., 0., 101., 249., 0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798.,  0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 670., 1838., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 190., 590.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 798.,  0., 0., 350., 1006., 0., 0., 430., 1214., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 670., 1838., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,  0.,  0.,  5.,  12.,  21., 32., 0.,  0.,
      0.,  0.,   9.,   20.,  33., 48., 0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  13., 28., 45., 64.,  0.,  0.,  0.,  0.,
      17., 36.,  57.,  80.,  0.,  0.,  0.,  0.,  21., 44.,  69., 96., 0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  25., 52.,
      81., 112., 0.,   0.,   0.,  0.,  29., 60., 93., 128., 0.,  0.,  0.,  0.,
      33., 68.,  105., 144., 0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,  0.,  0.,  5.,  12.,  21., 32., 0.,  0.,
      0.,  0.,   9.,   20.,  33., 48., 0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  13., 28., 45., 64.,  0.,  0.,  0.,  0.,
      17., 36.,  57.,  80.,  0.,  0.,  0.,  0.,  21., 44.,  69., 96., 0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  25., 52.,
      81., 112., 0.,   0.,   0.,  0.,  29., 60., 93., 128., 0.,  0.,  0.,  0.,
      33., 68.,  105., 144., 0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,  0.,  0.,
      0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,   0.,   0.,    29.,  81.,  149., 233.,
      0.,   0.,   0.,   0.,   53.,  137., 237., 353.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      77.,  193., 325., 473., 0.,   0.,   0.,   0.,    101., 249., 413., 593.,
      0.,   0.,   0.,   0.,   125., 305., 501., 713.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      149., 361., 589., 833., 0.,   0.,   0.,   0.,    173., 417., 677., 953.,
      0.,   0.,   0.,   0.,   197., 473., 765., 1073., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,   0.,   0.,    29.,  81.,  149., 233.,
      0.,   0.,   0.,   0.,   53.,  137., 237., 353.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      77.,  193., 325., 473., 0.,   0.,   0.,   0.,    101., 249., 413., 593.,
      0.,   0.,   0.,   0.,   125., 305., 501., 713.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      149., 361., 589., 833., 0.,   0.,   0.,   0.,    173., 417., 677., 953.,
      0.,   0.,   0.,   0.,   197., 473., 765., 1073., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774., 0.,    0.,    0.,    0.,    350.,  1006., 1790., 2702.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    510.,  1422.,
      2462., 3630., 0.,    0.,    0.,    0.,    670.,  1838., 3134., 4558.,
      0.,    0.,    0.,    0.,    830.,  2254., 3806., 5486., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    990.,  2670., 4478., 6414.,
      0.,    0.,    0.,    0.,    1150., 3086., 5150., 7342., 0.,    0.,
      0.,    0.,    1310., 3502., 5822., 8270., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,  0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774., 0.,    0.,    0.,    0.,    350.,  1006., 1790., 2702.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    510.,  1422.,
      2462., 3630., 0.,    0.,    0.,    0.,    670.,  1838., 3134., 4558.,
      0.,    0.,    0.,    0.,    830.,  2254., 3806., 5486., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    990.,  2670., 4478., 6414.,
      0.,    0.,    0.,    0.,    1150., 3086., 5150., 7342., 0.,    0.,
      0.,    0.,    1310., 3502., 5822., 8270., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2.,  0., 0., 0., 3.,  0., 4.,
                                         5., 0., 6.,  0., 0., 0., 7.,  0., 8.,
                                         9., 0., 10., 0., 0., 0., 11., 0., 12.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2.,  0., 0., 0., 3.,  0., 4.,
                                         5., 0., 6.,  0., 0., 0., 7.,  0., 8.,
                                         9., 0., 10., 0., 0., 0., 11., 0., 12.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,  0., 17., 0., 23., 29., 0.,  35., 0., 0.,
      0., 41., 0.,  47., 53., 0., 59., 0., 0.,  0.,  65., 0.,  71.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,  0., 17., 0., 23., 29., 0.,  35., 0., 0.,
      0., 41., 0.,  47., 53., 0., 59., 0., 0.,  0.,  65., 0.,  71.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 0.,   70., 0.,   0.,   0., 110., 0., 150., 190., 0.,   230., 0.,  0.,
      0.,  270., 0.,  310., 350., 0., 390., 0., 0.,   0.,   430., 0.,   470.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 0.,   70., 0.,   0.,   0., 110., 0., 150., 190., 0.,   230., 0.,  0.,
      0.,  270., 0.,  310., 350., 0., 390., 0., 0.,   0.,   430., 0.,   470.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 0.,  0.,  3., 8.,  0.,  0.,  0.,  0.,  0.,  0., 5.,  12.,
      0., 0., 7.,  16., 9., 20., 0.,  0.,  11., 24., 0.,  0., 0.,  0.,
      0., 0., 13., 28., 0., 0.,  15., 32., 17., 36., 0.,  0., 19., 40.,
      0., 0., 0.,  0.,  0., 0.,  21., 44., 0.,  0.,  23., 48.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 4., 0.,  0.,  3., 8.,  0.,  0.,  0.,  0.,  0.,  0., 5.,  12.,
      0., 0., 7.,  16., 9., 20., 0.,  0.,  11., 24., 0.,  0., 0.,  0.,
      0., 0., 13., 28., 0., 0.,  15., 32., 17., 36., 0.,  0., 19., 40.,
      0., 0., 0.,  0.,  0., 0.,  21., 44., 0.,  0.,  23., 48.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0.,   0.,   17.,  53.,  0.,   0.,   0.,   0.,   0.,
      0.,  29.,  81.,  0.,   0.,   41.,  109., 53.,  137., 0.,   0.,
      65., 165., 0.,   0.,   0.,   0.,   0.,   0.,   77.,  193., 0.,
      0.,  89.,  221., 101., 249., 0.,   0.,   113., 277., 0.,   0.,
      0.,  0.,   0.,   0.,   125., 305., 0.,   0.,   137., 333.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  25.,  0.,   0.,   17.,  53.,  0.,   0.,   0.,   0.,   0.,
      0.,  29.,  81.,  0.,   0.,   41.,  109., 53.,  137., 0.,   0.,
      65., 165., 0.,   0.,   0.,   0.,   0.,   0.,   77.,  193., 0.,
      0.,  89.,  221., 101., 249., 0.,   0.,   113., 277., 0.,   0.,
      0.,  0.,   0.,   0.,   125., 305., 0.,   0.,   137., 333.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0.,    0.,   110.,  382.,  0.,   0.,   0.,    0.,    0.,
      0.,   190.,  590.,  0.,   0.,    270.,  798., 350., 1006., 0.,    0.,
      430., 1214., 0.,    0.,   0.,    0.,    0.,   0.,   510.,  1422., 0.,
      0.,   590.,  1630., 670., 1838., 0.,    0.,   750., 2046., 0.,    0.,
      0.,   0.,    0.,    0.,   830.,  2254., 0.,   0.,   910.,  2462.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0.,    0.,   110.,  382.,  0.,   0.,   0.,    0.,    0.,
      0.,   190.,  590.,  0.,   0.,    270.,  798., 350., 1006., 0.,    0.,
      430., 1214., 0.,    0.,   0.,    0.,    0.,   0.,   510.,  1422., 0.,
      0.,   590.,  1630., 670., 1838., 0.,    0.,   750., 2046., 0.,    0.,
      0.,   0.,    0.,    0.,   830.,  2254., 0.,   0.,   910.,  2462.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0., 0., 0., 0., 5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      9.,  20., 33.,  48.,  0., 0., 0., 0., 13., 28., 45.,  64.,
      17., 36., 57.,  80.,  0., 0., 0., 0., 21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      25., 52., 81.,  112., 0., 0., 0., 0., 29., 60., 93.,  128.,
      33., 68., 105., 144., 0., 0., 0., 0., 37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      41., 84., 129., 176., 0., 0., 0., 0., 45., 92., 141., 192.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0., 0., 0., 0., 5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      9.,  20., 33.,  48.,  0., 0., 0., 0., 13., 28., 45.,  64.,
      17., 36., 57.,  80.,  0., 0., 0., 0., 21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      25., 52., 81.,  112., 0., 0., 0., 0., 29., 60., 93.,  128.,
      33., 68., 105., 144., 0., 0., 0., 0., 37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      41., 84., 129., 176., 0., 0., 0., 0., 45., 92., 141., 192.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237., 353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      101., 249., 413., 593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589., 833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      197., 473., 765., 1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941., 1313., 0., 0., 0., 0., 269., 641., 1029., 1433.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237., 353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      101., 249., 413., 593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589., 833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      197., 473., 765., 1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941., 1313., 0., 0., 0., 0., 269., 641., 1029., 1433.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,   0., 0., 0., 0., 190.,  590.,  1118., 1774.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      350.,  1006., 1790., 2702.,  0., 0., 0., 0., 510.,  1422., 2462., 3630.,
      670.,  1838., 3134., 4558.,  0., 0., 0., 0., 830.,  2254., 3806., 5486.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      990.,  2670., 4478., 6414.,  0., 0., 0., 0., 1150., 3086., 5150., 7342.,
      1310., 3502., 5822., 8270.,  0., 0., 0., 0., 1470., 3918., 6494., 9198.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1630., 4334., 7166., 10126., 0., 0., 0., 0., 1790., 4750., 7838., 11054.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,   0., 0., 0., 0., 190.,  590.,  1118., 1774.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      350.,  1006., 1790., 2702.,  0., 0., 0., 0., 510.,  1422., 2462., 3630.,
      670.,  1838., 3134., 4558.,  0., 0., 0., 0., 830.,  2254., 3806., 5486.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      990.,  2670., 4478., 6414.,  0., 0., 0., 0., 1150., 3086., 5150., 7342.,
      1310., 3502., 5822., 8270.,  0., 0., 0., 0., 1470., 3918., 6494., 9198.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1630., 4334., 7166., 10126., 0., 0., 0., 0., 1790., 4750., 7838., 11054.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,  0., 0.,  3.,
                                         0., 4., 0., 5., 0., 6.,  0., 0.,  0.,
                                         0., 0., 7., 0., 8., 0.,  9., 0.,  10.,
                                         0., 0., 0., 0., 0., 11., 0., 12., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,  0., 0.,  3.,
                                         0., 4., 0., 5., 0., 6.,  0., 0.,  0.,
                                         0., 0., 7., 0., 8., 0.,  9., 0.,  10.,
                                         0., 0., 0., 0., 0., 11., 0., 12., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4., 0.,  0.,  3.,  8.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,
      0.,  5., 12., 0.,  0.,  7.,  16., 0.,  0.,  9.,  20., 0.,  0., 11., 24.,
      0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  13., 28., 0., 0.,  15.,
      32., 0., 0.,  17., 36., 0.,  0.,  19., 40., 0.,  0.,  0.,  0., 0.,  0.,
      0.,  0., 0.,  0.,  21., 44., 0.,  0.,  23., 48., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4., 0.,  0.,  3.,  8.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,
      0.,  5., 12., 0.,  0.,  7.,  16., 0.,  0.,  9.,  20., 0.,  0., 11., 24.,
      0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  13., 28., 0., 0.,  15.,
      32., 0., 0.,  17., 36., 0.,  0.,  19., 40., 0.,  0.,  0.,  0., 0.,  0.,
      0.,  0., 0.,  0.,  21., 44., 0.,  0.,  23., 48., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 29.,  81.,  0., 0., 41.,  109., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 77.,  193., 0., 0., 89.,  221., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 125., 305., 0., 0., 137., 333., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 29.,  81.,  0., 0., 41.,  109., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 77.,  193., 0., 0., 89.,  221., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0.,   0.,   0., 0.,
      0.,   0.,   0., 0., 125., 305., 0., 0., 137., 333., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 190., 590.,  0., 0., 270., 798.,  0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 510., 1422., 0., 0., 590., 1630., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 830., 2254., 0., 0., 910., 2462., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 190., 590.,  0., 0., 270., 798.,  0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 510., 1422., 0., 0., 590., 1630., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,    0., 0., 830., 2254., 0., 0., 910., 2462., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0.,  0.,  0.,   0.,   5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   9.,  20., 33.,  48.,
      0.,  0.,  0.,   0.,   13., 28., 45.,  64.,  0.,  0.,  0.,   0.,
      17., 36., 57.,  80.,  0.,  0.,  0.,   0.,   21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   25., 52., 81.,  112.,
      0.,  0.,  0.,   0.,   29., 60., 93.,  128., 0.,  0.,  0.,   0.,
      33., 68., 105., 144., 0.,  0.,  0.,   0.,   37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   41., 84., 129., 176.,
      0.,  0.,  0.,   0.,   45., 92., 141., 192., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0.,  0.,  0.,   0.,   5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   9.,  20., 33.,  48.,
      0.,  0.,  0.,   0.,   13., 28., 45.,  64.,  0.,  0.,  0.,   0.,
      17., 36., 57.,  80.,  0.,  0.,  0.,   0.,   21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   25., 52., 81.,  112.,
      0.,  0.,  0.,   0.,   29., 60., 93.,  128., 0.,  0.,  0.,   0.,
      33., 68., 105., 144., 0.,  0.,  0.,   0.,   37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   41., 84., 129., 176.,
      0.,  0.,  0.,   0.,   45., 92., 141., 192., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,  61.,  113., 0.,   0.,   0.,    0.,    29.,   81.,  149.,
      233.,  0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   53.,
      137.,  237., 353., 0.,   0.,   0.,   0.,    77.,   193.,  325., 473.,
      0.,    0.,   0.,   0.,   101., 249., 413.,  593.,  0.,    0.,   0.,
      0.,    125., 305., 501., 713., 0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   149., 361., 589., 833.,  0.,    0.,    0.,   0.,
      173.,  417., 677., 953., 0.,   0.,   0.,    0.,    197.,  473., 765.,
      1073., 0.,   0.,   0.,   0.,   221., 529.,  853.,  1193., 0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    245.,  585.,  941., 1313.,
      0.,    0.,   0.,   0.,   269., 641., 1029., 1433., 0.,    0.,   0.,
      0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,  61.,  113., 0.,   0.,   0.,    0.,    29.,   81.,  149.,
      233.,  0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   53.,
      137.,  237., 353., 0.,   0.,   0.,   0.,    77.,   193.,  325., 473.,
      0.,    0.,   0.,   0.,   101., 249., 413.,  593.,  0.,    0.,   0.,
      0.,    125., 305., 501., 713., 0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   149., 361., 589., 833.,  0.,    0.,    0.,   0.,
      173.,  417., 677., 953., 0.,   0.,   0.,    0.,    197.,  473., 765.,
      1073., 0.,   0.,   0.,   0.,   221., 529.,  853.,  1193., 0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,
      0.,    0.,   0.,   0.,   0.,   0.,   0.,    245.,  585.,  941., 1313.,
      0.,    0.,   0.,   0.,   269., 641., 1029., 1433., 0.,    0.,   0.,
      0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,  846.,  0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     350.,  1006., 1790., 2702., 0.,    0.,    0.,    0.,
      510.,  1422.,  2462., 3630., 0.,    0.,    0.,    0.,    670.,  1838.,
      3134., 4558.,  0.,    0.,    0.,    0.,    830.,  2254., 3806., 5486.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      990.,  2670.,  4478., 6414., 0.,    0.,    0.,    0.,    1150., 3086.,
      5150., 7342.,  0.,    0.,    0.,    0.,    1310., 3502., 5822., 8270.,
      0.,    0.,     0.,    0.,    1470., 3918., 6494., 9198., 0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    1630., 4334.,
      7166., 10126., 0.,    0.,    0.,    0.,    1790., 4750., 7838., 11054.,
      0.,    0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,  846.,  0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     350.,  1006., 1790., 2702., 0.,    0.,    0.,    0.,
      510.,  1422.,  2462., 3630., 0.,    0.,    0.,    0.,    670.,  1838.,
      3134., 4558.,  0.,    0.,    0.,    0.,    830.,  2254., 3806., 5486.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      990.,  2670.,  4478., 6414., 0.,    0.,    0.,    0.,    1150., 3086.,
      5150., 7342.,  0.,    0.,    0.,    0.,    1310., 3502., 5822., 8270.,
      0.,    0.,     0.,    0.,    1470., 3918., 6494., 9198., 0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,    1630., 4334.,
      7166., 10126., 0.,    0.,    0.,    0.,    1790., 4750., 7838., 11054.,
      0.,    0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0.,
      5., 0., 6.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0., 0.,  0.,
      0., 0., 10., 0., 11., 0., 12., 0., 13., 0., 14., 0., 15., 0.,
      0., 0., 0.,  0., 0.,  0., 16., 0., 17., 0., 18., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0.,
      5., 0., 6.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0., 0.,  0.,
      0., 0., 10., 0., 11., 0., 12., 0., 13., 0., 14., 0., 15., 0.,
      0., 0., 0.,  0., 0.,  0., 16., 0., 17., 0., 18., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0.,  0., 0.,   0., 0.,   0., 23., 0.,
      29., 0., 35., 0., 41., 0., 47., 0., 53.,  0., 0.,   0., 0.,  0.,
      0.,  0., 59., 0., 65., 0., 71., 0., 77.,  0., 83.,  0., 89., 0.,
      0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0., 107., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0.,  0., 0.,   0., 0.,   0., 23., 0.,
      29., 0., 35., 0., 41., 0., 47., 0., 53.,  0., 0.,   0., 0.,  0.,
      0.,  0., 59., 0., 65., 0., 71., 0., 77.,  0., 83.,  0., 89., 0.,
      0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0., 107., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190., 0., 230., 0., 270., 0., 310., 0., 350., 0., 0.,   0., 0.,   0.,
      0.,   0., 390., 0., 430., 0., 470., 0., 510., 0., 550., 0., 590., 0.,
      0.,   0., 0.,   0., 0.,   0., 630., 0., 670., 0., 710., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190., 0., 230., 0., 270., 0., 310., 0., 350., 0., 0.,   0., 0.,   0.,
      0.,   0., 390., 0., 430., 0., 470., 0., 510., 0., 550., 0., 590., 0.,
      0.,   0., 0.,   0., 0.,   0., 630., 0., 670., 0., 710., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 5.,  12., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 7.,  16., 0., 0., 9.,  20., 0., 0.,
      11., 24., 0., 0., 13., 28., 0., 0., 15., 32., 0., 0., 17., 36., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 19., 40., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 25., 52., 0., 0., 27., 56., 0., 0.,
      29., 60., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      31., 64., 0., 0., 33., 68., 0., 0., 35., 72., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 5.,  12., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 7.,  16., 0., 0., 9.,  20., 0., 0.,
      11., 24., 0., 0., 13., 28., 0., 0., 15., 32., 0., 0., 17., 36., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 19., 40., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 25., 52., 0., 0., 27., 56., 0., 0.,
      29., 60., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      31., 64., 0., 0., 33., 68., 0., 0., 35., 72., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33., 68.,  105., 144., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      37., 76.,  117., 160., 0.,  0.,   0.,   0.,   41., 84.,  129., 176.,
      0.,  0.,   0.,   0.,   45., 92.,  141., 192., 0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   57., 116., 177., 240., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      61., 124., 189., 256., 0.,  0.,   0.,   0.,   65., 132., 201., 272.,
      0.,  0.,   0.,   0.,   69., 140., 213., 288., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33., 68.,  105., 144., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      37., 76.,  117., 160., 0.,  0.,   0.,   0.,   41., 84.,  129., 176.,
      0.,  0.,   0.,   0.,   45., 92.,  141., 192., 0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   57., 116., 177., 240., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      61., 124., 189., 256., 0.,  0.,   0.,   0.,   65., 132., 201., 272.,
      0.,  0.,   0.,   0.,   69., 140., 213., 288., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,
      149.,  233.,  0.,    0.,    0.,    0.,    53.,   137.,  237.,  353.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,
      325.,  473.,  0.,    0.,    0.,    0.,    101.,  249.,  413.,  593.,
      0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,    0.,
      0.,    0.,    149.,  361.,  589.,  833.,  0.,    0.,    0.,    0.,
      173.,  417.,  677.,  953.,  0.,    0.,    0.,    0.,    197.,  473.,
      765.,  1073., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      221.,  529.,  853.,  1193., 0.,    0.,    0.,    0.,    245.,  585.,
      941.,  1313., 0.,    0.,    0.,    0.,    269.,  641.,  1029., 1433.,
      0.,    0.,    0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,    0.,    317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,
      341.,  809.,  1293., 1793., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    365.,  865.,  1381., 1913., 0.,    0.,    0.,    0.,
      389.,  921.,  1469., 2033., 0.,    0.,    0.,    0.,    413.,  977.,
      1557., 2153., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,
      149.,  233.,  0.,    0.,    0.,    0.,    53.,   137.,  237.,  353.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,
      325.,  473.,  0.,    0.,    0.,    0.,    101.,  249.,  413.,  593.,
      0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,    0.,
      0.,    0.,    149.,  361.,  589.,  833.,  0.,    0.,    0.,    0.,
      173.,  417.,  677.,  953.,  0.,    0.,    0.,    0.,    197.,  473.,
      765.,  1073., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      221.,  529.,  853.,  1193., 0.,    0.,    0.,    0.,    245.,  585.,
      941.,  1313., 0.,    0.,    0.,    0.,    269.,  641.,  1029., 1433.,
      0.,    0.,    0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,    0.,    317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,
      341.,  809.,  1293., 1793., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    365.,  865.,  1381., 1913., 0.,    0.,    0.,    0.,
      389.,  921.,  1469., 2033., 0.,    0.,    0.,    0.,    413.,  977.,
      1557., 2153., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,   846.,   0.,     0.,     0.,     0.,    190.,
      590.,  1118.,  1774.,  0.,     0.,     0.,     0.,     350.,  1006.,
      1790., 2702.,  0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     510.,   1422.,  2462.,  3630.,  0.,    0.,
      0.,    0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,    0.,
      0.,    830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,    0.,
      990.,  2670.,  4478.,  6414.,  0.,     0.,     0.,     0.,    1150.,
      3086., 5150.,  7342.,  0.,     0.,     0.,     0.,     1310., 3502.,
      5822., 8270.,  0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     1470.,  3918.,  6494.,  9198.,  0.,    0.,
      0.,    0.,     1630.,  4334.,  7166.,  10126., 0.,     0.,    0.,
      0.,    1790.,  4750.,  7838.,  11054., 0.,     0.,     0.,    0.,
      1950., 5166.,  8510.,  11982., 0.,     0.,     0.,     0.,    2110.,
      5582., 9182.,  12910., 0.,     0.,     0.,     0.,     2270., 5998.,
      9854., 13838., 0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     2430.,  6414.,  10526., 14766., 0.,    0.,
      0.,    0.,     2590.,  6830.,  11198., 15694., 0.,     0.,    0.,
      0.,    2750.,  7246.,  11870., 16622., 0.,     0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,   846.,   0.,     0.,     0.,     0.,    190.,
      590.,  1118.,  1774.,  0.,     0.,     0.,     0.,     350.,  1006.,
      1790., 2702.,  0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     510.,   1422.,  2462.,  3630.,  0.,    0.,
      0.,    0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,    0.,
      0.,    830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,    0.,
      990.,  2670.,  4478.,  6414.,  0.,     0.,     0.,     0.,    1150.,
      3086., 5150.,  7342.,  0.,     0.,     0.,     0.,     1310., 3502.,
      5822., 8270.,  0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     1470.,  3918.,  6494.,  9198.,  0.,    0.,
      0.,    0.,     1630.,  4334.,  7166.,  10126., 0.,     0.,    0.,
      0.,    1790.,  4750.,  7838.,  11054., 0.,     0.,     0.,    0.,
      1950., 5166.,  8510.,  11982., 0.,     0.,     0.,     0.,    2110.,
      5582., 9182.,  12910., 0.,     0.,     0.,     0.,     2270., 5998.,
      9854., 13838., 0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,     0.,     2430.,  6414.,  10526., 14766., 0.,    0.,
      0.,    0.,     2590.,  6830.,  11198., 15694., 0.,     0.,    0.,
      0.,    2750.,  7246.,  11870., 16622., 0.,     0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0.,  0., 0.,  3., 0., 4.,
                                         0., 0., 0., 5.,  0., 6.,  0., 0., 0.,
                                         7., 0., 8., 0.,  0., 0.,  9., 0., 10.,
                                         0., 0., 0., 11., 0., 12., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0.,  0., 0.,  3., 0., 4.,
                                         0., 0., 0., 5.,  0., 6.,  0., 0., 0.,
                                         7., 0., 8., 0.,  0., 0.,  9., 0., 10.,
                                         0., 0., 0., 11., 0., 12., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 17., 0., 23., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 41., 0., 47., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 65., 0., 71., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 17., 0., 23., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 41., 0., 47., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 65., 0., 71., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 110., 0., 150., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 270., 0., 310., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 430., 0., 470., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 110., 0., 150., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 270., 0., 310., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 430., 0., 470., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0.,  0.,  3.,  8.,  0.,  0.,  0.,  0., 0.,  0.,  5., 12., 0.,
      0.,  7.,  16., 0.,  0.,  0.,  0.,  0.,  0.,  9., 20., 0.,  0., 11., 24.,
      0.,  0.,  0.,  0.,  0.,  0.,  13., 28., 0.,  0., 15., 32., 0., 0.,  0.,
      0.,  0.,  0.,  17., 36., 0.,  0.,  19., 40., 0., 0.,  0.,  0., 0.,  0.,
      21., 44., 0.,  0.,  23., 48., 0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0.,  0.,  3.,  8.,  0.,  0.,  0.,  0., 0.,  0.,  5., 12., 0.,
      0.,  7.,  16., 0.,  0.,  0.,  0.,  0.,  0.,  9., 20., 0.,  0., 11., 24.,
      0.,  0.,  0.,  0.,  0.,  0.,  13., 28., 0.,  0., 15., 32., 0., 0.,  0.,
      0.,  0.,  0.,  17., 36., 0.,  0.,  19., 40., 0., 0.,  0.,  0., 0.,  0.,
      21., 44., 0.,  0.,  23., 48., 0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 0., 0., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0., 0., 0., 0.,
      830., 2254., 0., 0., 910., 2462., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 0., 0., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0., 0., 0., 0.,
      830., 2254., 0., 0., 910., 2462., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0., 0., 0., 0., 5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      9.,  20., 33.,  48.,  0., 0., 0., 0., 13., 28., 45.,  64.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      17., 36., 57.,  80.,  0., 0., 0., 0., 21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      25., 52., 81.,  112., 0., 0., 0., 0., 29., 60., 93.,  128.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      33., 68., 105., 144., 0., 0., 0., 0., 37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      41., 84., 129., 176., 0., 0., 0., 0., 45., 92., 141., 192.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  9.,   16.,  0., 0., 0., 0., 5.,  12., 21.,  32.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      9.,  20., 33.,  48.,  0., 0., 0., 0., 13., 28., 45.,  64.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      17., 36., 57.,  80.,  0., 0., 0., 0., 21., 44., 69.,  96.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      25., 52., 81.,  112., 0., 0., 0., 0., 29., 60., 93.,  128.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      33., 68., 105., 144., 0., 0., 0., 0., 37., 76., 117., 160.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      41., 84., 129., 176., 0., 0., 0., 0., 45., 92., 141., 192.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237., 353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      101., 249., 413., 593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589., 833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      197., 473., 765., 1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941., 1313., 0., 0., 0., 0., 269., 641., 1029., 1433.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237., 353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      101., 249., 413., 593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589., 833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      197., 473., 765., 1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941., 1313., 0., 0., 0., 0., 269., 641., 1029., 1433.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,   0., 0., 0., 0., 190.,  590.,  1118., 1774.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      350.,  1006., 1790., 2702.,  0., 0., 0., 0., 510.,  1422., 2462., 3630.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      670.,  1838., 3134., 4558.,  0., 0., 0., 0., 830.,  2254., 3806., 5486.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      990.,  2670., 4478., 6414.,  0., 0., 0., 0., 1150., 3086., 5150., 7342.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1310., 3502., 5822., 8270.,  0., 0., 0., 0., 1470., 3918., 6494., 9198.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1630., 4334., 7166., 10126., 0., 0., 0., 0., 1790., 4750., 7838., 11054.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  446.,  846.,   0., 0., 0., 0., 190.,  590.,  1118., 1774.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      350.,  1006., 1790., 2702.,  0., 0., 0., 0., 510.,  1422., 2462., 3630.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      670.,  1838., 3134., 4558.,  0., 0., 0., 0., 830.,  2254., 3806., 5486.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      990.,  2670., 4478., 6414.,  0., 0., 0., 0., 1150., 3086., 5150., 7342.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1310., 3502., 5822., 8270.,  0., 0., 0., 0., 1470., 3918., 6494., 9198.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.,
      1630., 4334., 7166., 10126., 0., 0., 0., 0., 1790., 4750., 7838., 11054.,
      0.,    0.,    0.,    0.,     0., 0., 0., 0., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 0., 0., 0., 0., 3.,  0., 4.,  0., 0., 0., 0., 0.,
      5., 0., 6.,  0., 0., 0., 0., 0., 7.,  0., 8.,  0., 0., 0., 0., 0.,
      9., 0., 10., 0., 0., 0., 0., 0., 11., 0., 12., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 0., 0., 0., 0., 3.,  0., 4.,  0., 0., 0., 0., 0.,
      5., 0., 6.,  0., 0., 0., 0., 0., 7.,  0., 8.,  0., 0., 0., 0., 0.,
      9., 0., 10., 0., 0., 0., 0., 0., 11., 0., 12., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0., 0., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0., 0., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0., 0., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0., 0., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      830., 2254., 0., 0., 910., 2462., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  174.,  0., 0., 110., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 590.,  0., 0., 270., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 1006., 0., 0., 430., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      510., 1422., 0., 0., 590., 1630., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      670., 1838., 0., 0., 750., 2046., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      830., 2254., 0., 0., 910., 2462., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  0.,  0.,  0.,   0.,   5.,   12.,  21., 32., 0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  9.,   20.,  33.,  48.,  0.,  0.,  0.,
      0.,   13.,  28.,  45.,  64., 0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  17.,
      36.,  57.,  80.,  0.,   0.,  0.,  0.,   21.,  44.,  69.,  96., 0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  25., 52.,  81.,  112., 0.,   0.,  0.,  0.,
      29.,  60.,  93.,  128., 0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  33., 68.,
      105., 144., 0.,   0.,   0.,  0.,  37.,  76.,  117., 160., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   41., 84., 129., 176., 0.,   0.,   0.,  0.,  45.,
      92.,  141., 192., 0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  0.,  0.,  0.,   0.,   5.,   12.,  21., 32., 0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  9.,   20.,  33.,  48.,  0.,  0.,  0.,
      0.,   13.,  28.,  45.,  64., 0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  17.,
      36.,  57.,  80.,  0.,   0.,  0.,  0.,   21.,  44.,  69.,  96., 0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  25., 52.,  81.,  112., 0.,   0.,  0.,  0.,
      29.,  60.,  93.,  128., 0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  33., 68.,
      105., 144., 0.,   0.,   0.,  0.,  37.,  76.,  117., 160., 0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   41., 84., 129., 176., 0.,   0.,   0.,  0.,  45.,
      92.,  141., 192., 0.,   0.,  0.,  0.,   0.,   0.,   0.,   0.,  0.,  0.,
      0.,   0.,   0.,   0.,   0.,  0.,  0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,    0.,    0.,    29.,  81.,   149.,
      233., 0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    53.,
      137., 237., 353., 0.,   0.,   0.,    0.,    77.,   193., 325.,  473.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   101.,  249.,
      413., 593., 0.,   0.,   0.,   0.,    125.,  305.,  501., 713.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    149., 361.,  589.,
      833., 0.,   0.,   0.,   0.,   173.,  417.,  677.,  953., 0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    197.,  473., 765.,  1073.,
      0.,   0.,   0.,   0.,   221., 529.,  853.,  1193., 0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    245.,  585.,  941., 1313., 0.,
      0.,   0.,   0.,   269., 641., 1029., 1433., 0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,  113., 0.,   0.,    0.,    0.,    29.,  81.,   149.,
      233., 0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    53.,
      137., 237., 353., 0.,   0.,   0.,    0.,    77.,   193., 325.,  473.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   101.,  249.,
      413., 593., 0.,   0.,   0.,   0.,    125.,  305.,  501., 713.,  0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    149., 361.,  589.,
      833., 0.,   0.,   0.,   0.,   173.,  417.,  677.,  953., 0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    197.,  473., 765.,  1073.,
      0.,   0.,   0.,   0.,   221., 529.,  853.,  1193., 0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    245.,  585.,  941., 1313., 0.,
      0.,   0.,   0.,   269., 641., 1029., 1433., 0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,  846.,   0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774.,  0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     350.,  1006.,  1790., 2702., 0.,    0.,    0.,    0.,
      510.,  1422.,  2462., 3630.,  0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     670.,  1838., 3134., 4558., 0.,    0.,
      0.,    0.,     830.,  2254.,  3806., 5486., 0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    990.,  2670., 4478., 6414.,
      0.,    0.,     0.,    0.,     1150., 3086., 5150., 7342., 0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    1310., 3502.,
      5822., 8270.,  0.,    0.,     0.,    0.,    1470., 3918., 6494., 9198.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      1630., 4334.,  7166., 10126., 0.,    0.,    0.,    0.,    1790., 4750.,
      7838., 11054., 0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,   446.,  846.,   0.,    0.,    0.,    0.,    190.,  590.,
      1118., 1774.,  0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     350.,  1006.,  1790., 2702., 0.,    0.,    0.,    0.,
      510.,  1422.,  2462., 3630.,  0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     670.,  1838., 3134., 4558., 0.,    0.,
      0.,    0.,     830.,  2254.,  3806., 5486., 0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    990.,  2670., 4478., 6414.,
      0.,    0.,     0.,    0.,     1150., 3086., 5150., 7342., 0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    1310., 3502.,
      5822., 8270.,  0.,    0.,     0.,    0.,    1470., 3918., 6494., 9198.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      1630., 4334.,  7166., 10126., 0.,    0.,    0.,    0.,    1790., 4750.,
      7838., 11054., 0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,     0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0.,  3.,  0.,  0.,  0.,  0.,  0., 0.,  0., 4., 0., 5.,
      0.,  6., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  7., 0.,  8., 0., 9., 0.,
      0.,  0., 0.,  0.,  0.,  0.,  10., 0.,  11., 0., 12., 0., 0., 0., 0.,
      0.,  0., 0.,  13., 0.,  14., 0.,  15., 0.,  0., 0.,  0., 0., 0., 0.,
      16., 0., 17., 0.,  18., 0.,  0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0.,  3.,  0.,  0.,  0.,  0.,  0., 0.,  0., 4., 0., 5.,
      0.,  6., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  7., 0.,  8., 0., 9., 0.,
      0.,  0., 0.,  0.,  0.,  0.,  10., 0.,  11., 0., 12., 0., 0., 0., 0.,
      0.,  0., 0.,  13., 0.,  14., 0.,  15., 0.,  0., 0.,  0., 0., 0., 0.,
      16., 0., 17., 0.,  18., 0.,  0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11., 0., 17., 0., 0.,  0., 0.,  0., 0.,  0., 23., 0., 29.,  0.,
      35.,  0., 0.,  0., 0.,  0., 0.,  0., 41., 0., 47., 0., 53., 0., 0.,   0.,
      0.,   0., 0.,  0., 59., 0., 65., 0., 71., 0., 0.,  0., 0.,  0., 0.,   0.,
      77.,  0., 83., 0., 89., 0., 0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0.,
      107., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11., 0., 17., 0., 0.,  0., 0.,  0., 0.,  0., 23., 0., 29.,  0.,
      35.,  0., 0.,  0., 0.,  0., 0.,  0., 41., 0., 47., 0., 53., 0., 0.,   0.,
      0.,   0., 0.,  0., 59., 0., 65., 0., 71., 0., 0.,  0., 0.,  0., 0.,   0.,
      77.,  0., 83., 0., 89., 0., 0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0.,
      107., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.,
      390., 0., 430., 0., 470., 0., 0., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 590., 0., 0., 0., 0., 0., 0., 0.,
      630., 0., 670., 0., 710., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.,
      390., 0., 430., 0., 470., 0., 0., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 590., 0., 0., 0., 0., 0., 0., 0.,
      630., 0., 670., 0., 710., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 5.,  12., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 7.,  16., 0., 0., 9.,  20., 0., 0.,
      11., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 17., 36., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 19., 40., 0., 0., 21., 44., 0., 0.,
      23., 48., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      25., 52., 0., 0., 27., 56., 0., 0., 29., 60., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 31., 64., 0., 0., 33., 68., 0., 0.,
      35., 72., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 5.,  12., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 7.,  16., 0., 0., 9.,  20., 0., 0.,
      11., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 17., 36., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 19., 40., 0., 0., 21., 44., 0., 0.,
      23., 48., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      25., 52., 0., 0., 27., 56., 0., 0., 29., 60., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 31., 64., 0., 0., 33., 68., 0., 0.,
      35., 72., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33., 68.,  105., 144., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      37., 76.,  117., 160., 0.,  0.,   0.,   0.,   41., 84.,  129., 176.,
      0.,  0.,   0.,   0.,   45., 92.,  141., 192., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   57., 116., 177., 240., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      61., 124., 189., 256., 0.,  0.,   0.,   0.,   65., 132., 201., 272.,
      0.,  0.,   0.,   0.,   69., 140., 213., 288., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33., 68.,  105., 144., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      37., 76.,  117., 160., 0.,  0.,   0.,   0.,   41., 84.,  129., 176.,
      0.,  0.,   0.,   0.,   45., 92.,  141., 192., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   57., 116., 177., 240., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      61., 124., 189., 256., 0.,  0.,   0.,   0.,   65., 132., 201., 272.,
      0.,  0.,   0.,   0.,   69., 140., 213., 288., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113., 0.,    0.,    0.,    0.,    29.,   81.,   149.,
      233.,  0.,    0.,    0.,   0.,    53.,   137.,  237.,  353.,  0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   77.,   193.,  325.,  473.,  0.,    0.,    0.,
      0.,    101.,  249.,  413., 593.,  0.,    0.,    0.,    0.,    125.,  305.,
      501.,  713.,  0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    149.,  361.,  589.,
      833.,  0.,    0.,    0.,   0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,    0.,    197.,  473., 765.,  1073., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    221.,  529.,  853., 1193., 0.,    0.,    0.,    0.,    245.,  585.,
      941.,  1313., 0.,    0.,   0.,    0.,    269.,  641.,  1029., 1433., 0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,    0.,    317.,  753., 1205., 1673., 0.,    0.,    0.,    0.,    341.,
      809.,  1293., 1793., 0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    365.,  865.,
      1381., 1913., 0.,    0.,   0.,    0.,    389.,  921.,  1469., 2033., 0.,
      0.,    0.,    0.,    413., 977.,  1557., 2153., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113., 0.,    0.,    0.,    0.,    29.,   81.,   149.,
      233.,  0.,    0.,    0.,   0.,    53.,   137.,  237.,  353.,  0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   77.,   193.,  325.,  473.,  0.,    0.,    0.,
      0.,    101.,  249.,  413., 593.,  0.,    0.,    0.,    0.,    125.,  305.,
      501.,  713.,  0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    149.,  361.,  589.,
      833.,  0.,    0.,    0.,   0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,    0.,    197.,  473., 765.,  1073., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    221.,  529.,  853., 1193., 0.,    0.,    0.,    0.,    245.,  585.,
      941.,  1313., 0.,    0.,   0.,    0.,    269.,  641.,  1029., 1433., 0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,    0.,    317.,  753., 1205., 1673., 0.,    0.,    0.,    0.,    341.,
      809.,  1293., 1793., 0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    365.,  865.,
      1381., 1913., 0.,    0.,   0.,    0.,    389.,  921.,  1469., 2033., 0.,
      0.,    0.,    0.,    413., 977.,  1557., 2153., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,  0.,     0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,    0.,     0.,     0.,     350.,   1006.,
      1790.,  2702.,  0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,  1422.,  2462.,  3630.,  0.,     0.,
      0.,     0.,     670.,   1838., 3134.,  4558.,  0.,     0.,     0.,
      0.,     830.,   2254.,  3806., 5486.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,    0.,     1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,    1310.,  3502.,  5822.,  8270.,  0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      1470.,  3918.,  6494.,  9198., 0.,     0.,     0.,     0.,     1630.,
      4334.,  7166.,  10126., 0.,    0.,     0.,     0.,     1790.,  4750.,
      7838.,  11054., 0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950., 5166.,  8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582., 9182.,  12910., 0.,     0.,     0.,
      0.,     2270.,  5998.,  9854., 13838., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     2430.,  6414.,  10526.,
      14766., 0.,     0.,     0.,    0.,     2590.,  6830.,  11198., 15694.,
      0.,     0.,     0.,     0.,    2750.,  7246.,  11870., 16622., 0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,  0.,     0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,    0.,     0.,     0.,     350.,   1006.,
      1790.,  2702.,  0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,  1422.,  2462.,  3630.,  0.,     0.,
      0.,     0.,     670.,   1838., 3134.,  4558.,  0.,     0.,     0.,
      0.,     830.,   2254.,  3806., 5486.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,    0.,     1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,    1310.,  3502.,  5822.,  8270.,  0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      1470.,  3918.,  6494.,  9198., 0.,     0.,     0.,     0.,     1630.,
      4334.,  7166.,  10126., 0.,    0.,     0.,     0.,     1790.,  4750.,
      7838.,  11054., 0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950., 5166.,  8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582., 9182.,  12910., 0.,     0.,     0.,
      0.,     2270.,  5998.,  9854., 13838., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     2430.,  6414.,  10526.,
      14766., 0.,     0.,     0.,    0.,     2590.,  6830.,  11198., 15694.,
      0.,     0.,     0.,     0.,    2750.,  7246.,  11870., 16622., 0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 0.,  0., 3.,  0., 4.,  0., 0.,  0., 5.,  0.,
      6.,  0., 0.,  0., 7.,  0., 8.,  0., 0.,  0., 9.,  0., 10., 0.,
      0.,  0., 11., 0., 12., 0., 0.,  0., 13., 0., 14., 0., 0.,  0.,
      15., 0., 16., 0., 0.,  0., 17., 0., 18., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 0.,  0., 3.,  0., 4.,  0., 0.,  0., 5.,  0.,
      6.,  0., 0.,  0., 7.,  0., 8.,  0., 0.,  0., 9.,  0., 10., 0.,
      0.,  0., 11., 0., 12., 0., 0.,  0., 13., 0., 14., 0., 0.,  0.,
      15., 0., 16., 0., 0.,  0., 17., 0., 18., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0.,  0., 17.,  0., 23.,  0., 0.,  0., 29., 0.,
      35., 0., 0.,  0., 41., 0., 47.,  0., 0.,   0., 53., 0., 59., 0.,
      0.,  0., 65., 0., 71., 0., 0.,   0., 77.,  0., 83., 0., 0.,  0.,
      89., 0., 95., 0., 0.,  0., 101., 0., 107., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0.,  0., 17.,  0., 23.,  0., 0.,  0., 29., 0.,
      35., 0., 0.,  0., 41., 0., 47.,  0., 0.,   0., 53., 0., 59., 0.,
      0.,  0., 65., 0., 71., 0., 0.,   0., 77.,  0., 83., 0., 0.,  0.,
      89., 0., 95., 0., 0.,  0., 101., 0., 107., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0.,   0., 110., 0., 150., 0., 0.,   0., 190., 0.,
      230., 0., 0.,   0., 270., 0., 310., 0., 0.,   0., 350., 0., 390., 0.,
      0.,   0., 430., 0., 470., 0., 0.,   0., 510., 0., 550., 0., 0.,   0.,
      590., 0., 630., 0., 0.,   0., 670., 0., 710., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0.,   0., 110., 0., 150., 0., 0.,   0., 190., 0.,
      230., 0., 0.,   0., 270., 0., 310., 0., 0.,   0., 350., 0., 390., 0.,
      0.,   0., 430., 0., 470., 0., 0.,   0., 510., 0., 550., 0., 0.,   0.,
      590., 0., 630., 0., 0.,   0., 670., 0., 710., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0.,  0.,  0., 0., 5.,  12., 0., 0.,
      7.,  16., 0., 0., 0.,  0.,  0., 0., 9.,  20., 0., 0., 11., 24., 0., 0.,
      0.,  0.,  0., 0., 13., 28., 0., 0., 15., 32., 0., 0., 0.,  0.,  0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0.,  0.,  0., 0., 21., 44., 0., 0.,
      23., 48., 0., 0., 0.,  0.,  0., 0., 25., 52., 0., 0., 27., 56., 0., 0.,
      0.,  0.,  0., 0., 29., 60., 0., 0., 31., 64., 0., 0., 0.,  0.,  0., 0.,
      33., 68., 0., 0., 35., 72., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0.,  0.,  0., 0., 5.,  12., 0., 0.,
      7.,  16., 0., 0., 0.,  0.,  0., 0., 9.,  20., 0., 0., 11., 24., 0., 0.,
      0.,  0.,  0., 0., 13., 28., 0., 0., 15., 32., 0., 0., 0.,  0.,  0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0.,  0.,  0., 0., 21., 44., 0., 0.,
      23., 48., 0., 0., 0.,  0.,  0., 0., 25., 52., 0., 0., 27., 56., 0., 0.,
      0.,  0.,  0., 0., 29., 60., 0., 0., 31., 64., 0., 0., 0.,  0.,  0., 0.,
      33., 68., 0., 0., 35., 72., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 0., 0., 0., 0.,
      173., 417., 0., 0., 185., 445., 0., 0., 0., 0., 0., 0.,
      197., 473., 0., 0., 209., 501., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 0., 0., 0., 0.,
      173., 417., 0., 0., 185., 445., 0., 0., 0., 0., 0., 0.,
      197., 473., 0., 0., 209., 501., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 0., 0., 0., 0.,
      190.,  590.,  0., 0., 270.,  798.,  0., 0., 0., 0., 0., 0.,
      350.,  1006., 0., 0., 430.,  1214., 0., 0., 0., 0., 0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 0., 0., 0., 0.,
      670.,  1838., 0., 0., 750.,  2046., 0., 0., 0., 0., 0., 0.,
      830.,  2254., 0., 0., 910.,  2462., 0., 0., 0., 0., 0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 0., 0., 0., 0.,
      1150., 3086., 0., 0., 1230., 3294., 0., 0., 0., 0., 0., 0.,
      1310., 3502., 0., 0., 1390., 3710., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 0., 0., 0., 0.,
      190.,  590.,  0., 0., 270.,  798.,  0., 0., 0., 0., 0., 0.,
      350.,  1006., 0., 0., 430.,  1214., 0., 0., 0., 0., 0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 0., 0., 0., 0.,
      670.,  1838., 0., 0., 750.,  2046., 0., 0., 0., 0., 0., 0.,
      830.,  2254., 0., 0., 910.,  2462., 0., 0., 0., 0., 0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 0., 0., 0., 0.,
      1150., 3086., 0., 0., 1230., 3294., 0., 0., 0., 0., 0., 0.,
      1310., 3502., 0., 0., 1390., 3710., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0., 0., 0., 0., 5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      9.,  20.,  33.,  48.,  0., 0., 0., 0., 13., 28.,  45.,  64.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 36.,  57.,  80.,  0., 0., 0., 0., 21., 44.,  69.,  96.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0., 0., 0., 0., 29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      33., 68.,  105., 144., 0., 0., 0., 0., 37., 76.,  117., 160.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 84.,  129., 176., 0., 0., 0., 0., 45., 92.,  141., 192.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0., 0., 0., 0., 53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      57., 116., 177., 240., 0., 0., 0., 0., 61., 124., 189., 256.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 132., 201., 272., 0., 0., 0., 0., 69., 140., 213., 288.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0., 0., 0., 0., 5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      9.,  20.,  33.,  48.,  0., 0., 0., 0., 13., 28.,  45.,  64.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 36.,  57.,  80.,  0., 0., 0., 0., 21., 44.,  69.,  96.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0., 0., 0., 0., 29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      33., 68.,  105., 144., 0., 0., 0., 0., 37., 76.,  117., 160.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 84.,  129., 176., 0., 0., 0., 0., 45., 92.,  141., 192.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0., 0., 0., 0., 53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      57., 116., 177., 240., 0., 0., 0., 0., 61., 124., 189., 256.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 132., 201., 272., 0., 0., 0., 0., 69., 140., 213., 288.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,   113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237.,  353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      101., 249., 413.,  593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589.,  833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      197., 473., 765.,  1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941.,  1313., 0., 0., 0., 0., 269., 641., 1029., 1433.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      293., 697., 1117., 1553., 0., 0., 0., 0., 317., 753., 1205., 1673.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      341., 809., 1293., 1793., 0., 0., 0., 0., 365., 865., 1381., 1913.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      389., 921., 1469., 2033., 0., 0., 0., 0., 413., 977., 1557., 2153.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,   113.,  0., 0., 0., 0., 29.,  81.,  149.,  233.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      53.,  137., 237.,  353.,  0., 0., 0., 0., 77.,  193., 325.,  473.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      101., 249., 413.,  593.,  0., 0., 0., 0., 125., 305., 501.,  713.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      149., 361., 589.,  833.,  0., 0., 0., 0., 173., 417., 677.,  953.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      197., 473., 765.,  1073., 0., 0., 0., 0., 221., 529., 853.,  1193.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      245., 585., 941.,  1313., 0., 0., 0., 0., 269., 641., 1029., 1433.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      293., 697., 1117., 1553., 0., 0., 0., 0., 317., 753., 1205., 1673.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      341., 809., 1293., 1793., 0., 0., 0., 0., 365., 865., 1381., 1913.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.,
      389., 921., 1469., 2033., 0., 0., 0., 0., 413., 977., 1557., 2153.,
      0.,   0.,   0.,    0.,    0., 0., 0., 0., 0.,   0.,   0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,  446.,   846.,   0.,     0.,     0.,     0.,     190.,
      590.,   1118., 1774.,  0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     350.,   1006.,  1790.,
      2702.,  0.,    0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,
      0.,     0.,    830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      990.,   2670., 4478.,  6414.,  0.,     0.,     0.,     0.,     1150.,
      3086.,  5150., 7342.,  0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     1310.,  3502.,  5822.,
      8270.,  0.,    0.,     0.,     0.,     1470.,  3918.,  6494.,  9198.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     1630.,  4334.,  7166.,  10126., 0.,     0.,
      0.,     0.,    1790.,  4750.,  7838.,  11054., 0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      1950.,  5166., 8510.,  11982., 0.,     0.,     0.,     0.,     2110.,
      5582.,  9182., 12910., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     2270.,  5998.,  9854.,
      13838., 0.,    0.,     0.,     0.,     2430.,  6414.,  10526., 14766.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     2590.,  6830.,  11198., 15694., 0.,     0.,
      0.,     0.,    2750.,  7246.,  11870., 16622., 0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,  446.,   846.,   0.,     0.,     0.,     0.,     190.,
      590.,   1118., 1774.,  0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     350.,   1006.,  1790.,
      2702.,  0.,    0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,
      0.,     0.,    830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      990.,   2670., 4478.,  6414.,  0.,     0.,     0.,     0.,     1150.,
      3086.,  5150., 7342.,  0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     1310.,  3502.,  5822.,
      8270.,  0.,    0.,     0.,     0.,     1470.,  3918.,  6494.,  9198.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     1630.,  4334.,  7166.,  10126., 0.,     0.,
      0.,     0.,    1790.,  4750.,  7838.,  11054., 0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      1950.,  5166., 8510.,  11982., 0.,     0.,     0.,     0.,     2110.,
      5582.,  9182., 12910., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     2270.,  5998.,  9854.,
      13838., 0.,    0.,     0.,     0.,     2430.,  6414.,  10526., 14766.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,    0.,     2590.,  6830.,  11198., 15694., 0.,     0.,
      0.,     0.,    2750.,  7246.,  11870., 16622., 0.,     0.,     0.,
      0.,     0.,    0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0.,  0.,  0.,  0.,  0., 3., 0., 4.,  0.,  0.,  0.,  0.,
      0., 5., 0., 6.,  0.,  0.,  0.,  0., 0., 7., 0.,  8.,  0.,  0.,  0.,
      0., 0., 9., 0.,  10., 0.,  0.,  0., 0., 0., 11., 0.,  12., 0.,  0.,
      0., 0., 0., 13., 0.,  14., 0.,  0., 0., 0., 0.,  15., 0.,  16., 0.,
      0., 0., 0., 0.,  17., 0.,  18., 0., 0., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0.,  0.,  0.,  0.,  0., 3., 0., 4.,  0.,  0.,  0.,  0.,
      0., 5., 0., 6.,  0.,  0.,  0.,  0., 0., 7., 0.,  8.,  0.,  0.,  0.,
      0., 0., 9., 0.,  10., 0.,  0.,  0., 0., 0., 11., 0.,  12., 0.,  0.,
      0., 0., 0., 13., 0.,  14., 0.,  0., 0., 0., 0.,  15., 0.,  16., 0.,
      0., 0., 0., 0.,  17., 0.,  18., 0., 0., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,   0.,  0.,   0., 17., 0.,  23., 0.,  0.,  0.,  0.,
      0., 29., 0.,  35., 0.,   0.,  0.,   0., 0.,  41., 0.,  47., 0.,  0.,  0.,
      0., 0.,  53., 0.,  59.,  0.,  0.,   0., 0.,  0.,  65., 0.,  71., 0.,  0.,
      0., 0.,  0.,  77., 0.,   83., 0.,   0., 0.,  0.,  0.,  89., 0.,  95., 0.,
      0., 0.,  0.,  0.,  101., 0.,  107., 0., 0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,   0.,  0.,   0., 17., 0.,  23., 0.,  0.,  0.,  0.,
      0., 29., 0.,  35., 0.,   0.,  0.,   0., 0.,  41., 0.,  47., 0.,  0.,  0.,
      0., 0.,  53., 0.,  59.,  0.,  0.,   0., 0.,  0.,  65., 0.,  71., 0.,  0.,
      0., 0.,  0.,  77., 0.,   83., 0.,   0., 0.,  0.,  0.,  89., 0.,  95., 0.,
      0., 0.,  0.,  0.,  101., 0.,  107., 0., 0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 0., 0., 0., 0., 590., 0., 630., 0., 0., 0., 0., 0.,
      670., 0., 710., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 0., 0., 0., 0., 590., 0., 630., 0., 0., 0., 0., 0.,
      670., 0., 710., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      25., 52., 0., 0., 27., 56., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 60., 0., 0., 31., 64., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      33., 68., 0., 0., 35., 72., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  0., 0., 3.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  12., 0., 0., 7.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  20., 0., 0., 11., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 28., 0., 0., 15., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 36., 0., 0., 19., 40., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      21., 44., 0., 0., 23., 48., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      25., 52., 0., 0., 27., 56., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 60., 0., 0., 31., 64., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      33., 68., 0., 0., 35., 72., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      173., 417., 0., 0., 185., 445., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      197., 473., 0., 0., 209., 501., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  81.,  0., 0., 41.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  137., 0., 0., 65.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 249., 0., 0., 113., 277., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      125., 305., 0., 0., 137., 333., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      173., 417., 0., 0., 185., 445., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      197., 473., 0., 0., 209., 501., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 190.,  590.,  0., 0., 270.,  798.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 350.,  1006., 0., 0.,
      430.,  1214., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 670.,  1838., 0., 0., 750.,  2046., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 830.,  2254., 0., 0.,
      910.,  2462., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 1150., 3086., 0., 0., 1230., 3294., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 1310., 3502., 0., 0.,
      1390., 3710., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 190.,  590.,  0., 0., 270.,  798.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 350.,  1006., 0., 0.,
      430.,  1214., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 670.,  1838., 0., 0., 750.,  2046., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 830.,  2254., 0., 0.,
      910.,  2462., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 0.,    0.,    0., 0.,
      0.,    0.,    0., 0., 1150., 3086., 0., 0., 1230., 3294., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 1310., 3502., 0., 0.,
      1390., 3710., 0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,
      0.,  0.,   0.,   0.,   13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,  0.,  0.,   0.,   0.,
      21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   33., 68.,  105., 144.,
      0.,  0.,   0.,   0.,   37., 76.,  117., 160., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   41., 84.,  129., 176., 0.,  0.,   0.,   0.,
      45., 92.,  141., 192., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   57., 116., 177., 240.,
      0.,  0.,   0.,   0.,   61., 124., 189., 256., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   65., 132., 201., 272., 0.,  0.,   0.,   0.,
      69., 140., 213., 288., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,  0.,   0.,   0.,   5.,  12.,  21.,  32.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   9.,  20.,  33.,  48.,
      0.,  0.,   0.,   0.,   13., 28.,  45.,  64.,  0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   17., 36.,  57.,  80.,  0.,  0.,   0.,   0.,
      21., 44.,  69.,  96.,  0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,  0.,   0.,   0.,   29., 60.,  93.,  128.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   33., 68.,  105., 144.,
      0.,  0.,   0.,   0.,   37., 76.,  117., 160., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   41., 84.,  129., 176., 0.,  0.,   0.,   0.,
      45., 92.,  141., 192., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      49., 100., 153., 208., 0.,  0.,   0.,   0.,   53., 108., 165., 224.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   57., 116., 177., 240.,
      0.,  0.,   0.,   0.,   61., 124., 189., 256., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   65., 132., 201., 272., 0.,  0.,   0.,   0.,
      69., 140., 213., 288., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,   149.,
      233., 0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    53.,
      137., 237., 353.,  0.,    0.,    0.,    0.,    77.,   193.,  325.,  473.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    101.,  249.,
      413., 593., 0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    149.,  361.,  589.,
      833., 0.,   0.,    0.,    0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    197.,  473.,  765.,  1073.,
      0.,   0.,   0.,    0.,    221.,  529.,  853.,  1193., 0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    245.,  585.,  941.,  1313., 0.,
      0.,   0.,   0.,    269.,  641.,  1029., 1433., 0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,   0.,   317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    341.,  809.,  1293., 1793., 0.,    0.,    0.,
      0.,   365., 865.,  1381., 1913., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    389.,  921.,  1469., 2033., 0.,    0.,    0.,    0.,
      413., 977., 1557., 2153., 0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,   149.,
      233., 0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    53.,
      137., 237., 353.,  0.,    0.,    0.,    0.,    77.,   193.,  325.,  473.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    101.,  249.,
      413., 593., 0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    149.,  361.,  589.,
      833., 0.,   0.,    0.,    0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    197.,  473.,  765.,  1073.,
      0.,   0.,   0.,    0.,    221.,  529.,  853.,  1193., 0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    245.,  585.,  941.,  1313., 0.,
      0.,   0.,   0.,    269.,  641.,  1029., 1433., 0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,
      0.,   0.,   317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    341.,  809.,  1293., 1793., 0.,    0.,    0.,
      0.,   365., 865.,  1381., 1913., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    389.,  921.,  1469., 2033., 0.,    0.,    0.,    0.,
      413., 977., 1557., 2153., 0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,  0.,    0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    350.,   1006.,  1790.,  2702.,
      0.,     0.,     0.,     0.,    510.,  1422.,  2462.,  3630.,  0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     670.,   1838.,  3134., 4558., 0.,     0.,     0.,     0.,
      830.,   2254.,  3806.,  5486., 0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,    0.,    1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     1310.,  3502., 5822., 8270.,  0.,     0.,     0.,
      0.,     1470.,  3918.,  6494., 9198., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     1630.,  4334.,
      7166.,  10126., 0.,     0.,    0.,    0.,     1790.,  4750.,  7838.,
      11054., 0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950., 5166., 8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582., 9182., 12910., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     2270.,
      5998.,  9854.,  13838., 0.,    0.,    0.,     0.,     2430.,  6414.,
      10526., 14766., 0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    2590., 6830.,  11198., 15694., 0.,
      0.,     0.,     0.,     2750., 7246., 11870., 16622., 0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,  0.,    0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    350.,   1006.,  1790.,  2702.,
      0.,     0.,     0.,     0.,    510.,  1422.,  2462.,  3630.,  0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     670.,   1838.,  3134., 4558., 0.,     0.,     0.,     0.,
      830.,   2254.,  3806.,  5486., 0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,    0.,    1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     1310.,  3502., 5822., 8270.,  0.,     0.,     0.,
      0.,     1470.,  3918.,  6494., 9198., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     1630.,  4334.,
      7166.,  10126., 0.,     0.,    0.,    0.,     1790.,  4750.,  7838.,
      11054., 0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950., 5166., 8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582., 9182., 12910., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     2270.,
      5998.,  9854.,  13838., 0.,    0.,    0.,     0.,     2430.,  6414.,
      10526., 14766., 0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    2590., 6830.,  11198., 15694., 0.,
      0.,     0.,     0.,     2750., 7246., 11870., 16622., 0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0., 5.,  0.,
      6.,  0., 0.,  0., 0.,  0., 0.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0.,
      0.,  0., 0.,  0., 10., 0., 11., 0., 12., 0., 0.,  0., 0.,  0., 0.,  0.,
      13., 0., 14., 0., 15., 0., 0.,  0., 0.,  0., 0.,  0., 16., 0., 17., 0.,
      18., 0., 0.,  0., 0.,  0., 0.,  0., 19., 0., 20., 0., 21., 0., 0.,  0.,
      0.,  0., 0.,  0., 22., 0., 23., 0., 24., 0., 0.,  0., 0.,  0., 0.,  0.,
      25., 0., 26., 0., 27., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0., 5.,  0.,
      6.,  0., 0.,  0., 0.,  0., 0.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0.,
      0.,  0., 0.,  0., 10., 0., 11., 0., 12., 0., 0.,  0., 0.,  0., 0.,  0.,
      13., 0., 14., 0., 15., 0., 0.,  0., 0.,  0., 0.,  0., 16., 0., 17., 0.,
      18., 0., 0.,  0., 0.,  0., 0.,  0., 19., 0., 20., 0., 21., 0., 0.,  0.,
      0.,  0., 0.,  0., 22., 0., 23., 0., 24., 0., 0.,  0., 0.,  0., 0.,  0.,
      25., 0., 26., 0., 27., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11.,  0., 17.,  0., 0.,   0., 0.,   0., 0.,  0., 23.,  0.,
      29.,  0., 35.,  0., 0.,   0., 0.,   0., 0.,   0., 41., 0., 47.,  0.,
      53.,  0., 0.,   0., 0.,   0., 0.,   0., 59.,  0., 65., 0., 71.,  0.,
      0.,   0., 0.,   0., 0.,   0., 77.,  0., 83.,  0., 89., 0., 0.,   0.,
      0.,   0., 0.,   0., 95.,  0., 101., 0., 107., 0., 0.,  0., 0.,   0.,
      0.,   0., 113., 0., 119., 0., 125., 0., 0.,   0., 0.,  0., 0.,   0.,
      131., 0., 137., 0., 143., 0., 0.,   0., 0.,   0., 0.,  0., 149., 0.,
      155., 0., 161., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11.,  0., 17.,  0., 0.,   0., 0.,   0., 0.,  0., 23.,  0.,
      29.,  0., 35.,  0., 0.,   0., 0.,   0., 0.,   0., 41., 0., 47.,  0.,
      53.,  0., 0.,   0., 0.,   0., 0.,   0., 59.,  0., 65., 0., 71.,  0.,
      0.,   0., 0.,   0., 0.,   0., 77.,  0., 83.,  0., 89., 0., 0.,   0.,
      0.,   0., 0.,   0., 95.,  0., 101., 0., 107., 0., 0.,  0., 0.,   0.,
      0.,   0., 113., 0., 119., 0., 125., 0., 0.,   0., 0.,  0., 0.,   0.,
      131., 0., 137., 0., 143., 0., 0.,   0., 0.,   0., 0.,  0., 149., 0.,
      155., 0., 161., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   0., 70.,   0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190.,  0., 230.,  0., 0.,   0., 0.,   0., 0.,   0., 270., 0., 310., 0.,
      350.,  0., 0.,    0., 0.,   0., 0.,   0., 390., 0., 430., 0., 470., 0.,
      0.,    0., 0.,    0., 0.,   0., 510., 0., 550., 0., 590., 0., 0.,   0.,
      0.,    0., 0.,    0., 630., 0., 670., 0., 710., 0., 0.,   0., 0.,   0.,
      0.,    0., 750.,  0., 790., 0., 830., 0., 0.,   0., 0.,   0., 0.,   0.,
      870.,  0., 910.,  0., 950., 0., 0.,   0., 0.,   0., 0.,   0., 990., 0.,
      1030., 0., 1070., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   0., 70.,   0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190.,  0., 230.,  0., 0.,   0., 0.,   0., 0.,   0., 270., 0., 310., 0.,
      350.,  0., 0.,    0., 0.,   0., 0.,   0., 390., 0., 430., 0., 470., 0.,
      0.,    0., 0.,    0., 0.,   0., 510., 0., 550., 0., 590., 0., 0.,   0.,
      0.,    0., 0.,    0., 630., 0., 670., 0., 710., 0., 0.,   0., 0.,   0.,
      0.,    0., 750.,  0., 790., 0., 830., 0., 0.,   0., 0.,   0., 0.,   0.,
      870.,  0., 910.,  0., 950., 0., 0.,   0., 0.,   0., 0.,   0., 990., 0.,
      1030., 0., 1070., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   0., 0., 3.,  8.,   0., 0., 5.,  12.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 7.,  16.,  0., 0., 9.,  20., 0., 0.,
      11., 24.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      13., 28.,  0., 0., 15., 32.,  0., 0., 17., 36.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 19., 40.,  0., 0., 21., 44., 0., 0.,
      23., 48.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      25., 52.,  0., 0., 27., 56.,  0., 0., 29., 60.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 31., 64.,  0., 0., 33., 68., 0., 0.,
      35., 72.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      37., 76.,  0., 0., 39., 80.,  0., 0., 41., 84.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 43., 88.,  0., 0., 45., 92., 0., 0.,
      47., 96.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      49., 100., 0., 0., 51., 104., 0., 0., 53., 108., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   0., 0., 3.,  8.,   0., 0., 5.,  12.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 7.,  16.,  0., 0., 9.,  20., 0., 0.,
      11., 24.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      13., 28.,  0., 0., 15., 32.,  0., 0., 17., 36.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 19., 40.,  0., 0., 21., 44., 0., 0.,
      23., 48.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      25., 52.,  0., 0., 27., 56.,  0., 0., 29., 60.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 31., 64.,  0., 0., 33., 68., 0., 0.,
      35., 72.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      37., 76.,  0., 0., 39., 80.,  0., 0., 41., 84.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 43., 88.,  0., 0., 45., 92., 0., 0.,
      47., 96.,  0., 0., 0.,  0.,   0., 0., 0.,  0.,   0., 0., 0.,  0.,  0., 0.,
      49., 100., 0., 0., 51., 104., 0., 0., 53., 108., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      221., 529., 0., 0., 233., 557., 0., 0., 245., 585., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      257., 613., 0., 0., 269., 641., 0., 0., 281., 669., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      293., 697., 0., 0., 305., 725., 0., 0., 317., 753., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  0., 0., 17.,  53.,  0., 0., 29.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  109., 0., 0., 53.,  137., 0., 0., 65.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  193., 0., 0., 89.,  221., 0., 0., 101., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 277., 0., 0., 125., 305., 0., 0., 137., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 361., 0., 0., 161., 389., 0., 0., 173., 417., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      185., 445., 0., 0., 197., 473., 0., 0., 209., 501., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      221., 529., 0., 0., 233., 557., 0., 0., 245., 585., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      257., 613., 0., 0., 269., 641., 0., 0., 281., 669., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      293., 697., 0., 0., 305., 725., 0., 0., 317., 753., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1470., 3918., 0., 0., 1550., 4126., 0., 0., 1630., 4334., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1710., 4542., 0., 0., 1790., 4750., 0., 0., 1870., 4958., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1950., 5166., 0., 0., 2030., 5374., 0., 0., 2110., 5582., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  0., 0., 110.,  382.,  0., 0., 190.,  590.,  0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270.,  798.,  0., 0., 350.,  1006., 0., 0., 430.,  1214., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510.,  1422., 0., 0., 590.,  1630., 0., 0., 670.,  1838., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750.,  2046., 0., 0., 830.,  2254., 0., 0., 910.,  2462., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990.,  2670., 0., 0., 1070., 2878., 0., 0., 1150., 3086., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1230., 3294., 0., 0., 1310., 3502., 0., 0., 1390., 3710., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1470., 3918., 0., 0., 1550., 4126., 0., 0., 1630., 4334., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1710., 4542., 0., 0., 1790., 4750., 0., 0., 1870., 4958., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      1950., 5166., 0., 0., 2030., 5374., 0., 0., 2110., 5582., 0., 0.,
      0.,    0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,   0.,   0.,   0.,   5.,   12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,   20.,  33.,  48.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,   0.,   0.,   0.,   17.,  36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21.,  44.,  69.,  96.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,   0.,   0.,   0.,   29.,  60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33.,  68.,  105., 144., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      37., 76.,  117., 160., 0.,   0.,   0.,   0.,   41.,  84.,  129., 176.,
      0.,  0.,   0.,   0.,   45.,  92.,  141., 192., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      49., 100., 153., 208., 0.,   0.,   0.,   0.,   53.,  108., 165., 224.,
      0.,  0.,   0.,   0.,   57.,  116., 177., 240., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      61., 124., 189., 256., 0.,   0.,   0.,   0.,   65.,  132., 201., 272.,
      0.,  0.,   0.,   0.,   69.,  140., 213., 288., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      73., 148., 225., 304., 0.,   0.,   0.,   0.,   77.,  156., 237., 320.,
      0.,  0.,   0.,   0.,   81.,  164., 249., 336., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      85., 172., 261., 352., 0.,   0.,   0.,   0.,   89.,  180., 273., 368.,
      0.,  0.,   0.,   0.,   93.,  188., 285., 384., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      97., 196., 297., 400., 0.,   0.,   0.,   0.,   101., 204., 309., 416.,
      0.,  0.,   0.,   0.,   105., 212., 321., 432., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,   9.,   16.,  0.,   0.,   0.,   0.,   5.,   12.,  21.,  32.,
      0.,  0.,   0.,   0.,   9.,   20.,  33.,  48.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      13., 28.,  45.,  64.,  0.,   0.,   0.,   0.,   17.,  36.,  57.,  80.,
      0.,  0.,   0.,   0.,   21.,  44.,  69.,  96.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      25., 52.,  81.,  112., 0.,   0.,   0.,   0.,   29.,  60.,  93.,  128.,
      0.,  0.,   0.,   0.,   33.,  68.,  105., 144., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      37., 76.,  117., 160., 0.,   0.,   0.,   0.,   41.,  84.,  129., 176.,
      0.,  0.,   0.,   0.,   45.,  92.,  141., 192., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      49., 100., 153., 208., 0.,   0.,   0.,   0.,   53.,  108., 165., 224.,
      0.,  0.,   0.,   0.,   57.,  116., 177., 240., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      61., 124., 189., 256., 0.,   0.,   0.,   0.,   65.,  132., 201., 272.,
      0.,  0.,   0.,   0.,   69.,  140., 213., 288., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      73., 148., 225., 304., 0.,   0.,   0.,   0.,   77.,  156., 237., 320.,
      0.,  0.,   0.,   0.,   81.,  164., 249., 336., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      85., 172., 261., 352., 0.,   0.,   0.,   0.,   89.,  180., 273., 368.,
      0.,  0.,   0.,   0.,   93.,  188., 285., 384., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      97., 196., 297., 400., 0.,   0.,   0.,   0.,   101., 204., 309., 416.,
      0.,  0.,   0.,   0.,   105., 212., 321., 432., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,
      149.,  233.,  0.,    0.,    0.,    0.,    53.,   137.,  237.,  353.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,
      325.,  473.,  0.,    0.,    0.,    0.,    101.,  249.,  413.,  593.,
      0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    149.,  361.,  589.,  833.,
      0.,    0.,    0.,    0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,    0.,    197.,  473.,  765.,  1073., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    221.,  529.,  853.,  1193., 0.,    0.,
      0.,    0.,    245.,  585.,  941.,  1313., 0.,    0.,    0.,    0.,
      269.,  641.,  1029., 1433., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,    0.,    0.,
      317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,    341.,  809.,
      1293., 1793., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      365.,  865.,  1381., 1913., 0.,    0.,    0.,    0.,    389.,  921.,
      1469., 2033., 0.,    0.,    0.,    0.,    413.,  977.,  1557., 2153.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    437.,  1033.,
      1645., 2273., 0.,    0.,    0.,    0.,    461.,  1089., 1733., 2393.,
      0.,    0.,    0.,    0.,    485.,  1145., 1821., 2513., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    509.,  1201., 1909., 2633.,
      0.,    0.,    0.,    0.,    533.,  1257., 1997., 2753., 0.,    0.,
      0.,    0.,    557.,  1313., 2085., 2873., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    581.,  1369., 2173., 2993., 0.,    0.,
      0.,    0.,    605.,  1425., 2261., 3113., 0.,    0.,    0.,    0.,
      629.,  1481., 2349., 3233., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  0.,    0.,    0.,    0.,    29.,   81.,
      149.,  233.,  0.,    0.,    0.,    0.,    53.,   137.,  237.,  353.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,
      325.,  473.,  0.,    0.,    0.,    0.,    101.,  249.,  413.,  593.,
      0.,    0.,    0.,    0.,    125.,  305.,  501.,  713.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    149.,  361.,  589.,  833.,
      0.,    0.,    0.,    0.,    173.,  417.,  677.,  953.,  0.,    0.,
      0.,    0.,    197.,  473.,  765.,  1073., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    221.,  529.,  853.,  1193., 0.,    0.,
      0.,    0.,    245.,  585.,  941.,  1313., 0.,    0.,    0.,    0.,
      269.,  641.,  1029., 1433., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    293.,  697.,  1117., 1553., 0.,    0.,    0.,    0.,
      317.,  753.,  1205., 1673., 0.,    0.,    0.,    0.,    341.,  809.,
      1293., 1793., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      365.,  865.,  1381., 1913., 0.,    0.,    0.,    0.,    389.,  921.,
      1469., 2033., 0.,    0.,    0.,    0.,    413.,  977.,  1557., 2153.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    437.,  1033.,
      1645., 2273., 0.,    0.,    0.,    0.,    461.,  1089., 1733., 2393.,
      0.,    0.,    0.,    0.,    485.,  1145., 1821., 2513., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    509.,  1201., 1909., 2633.,
      0.,    0.,    0.,    0.,    533.,  1257., 1997., 2753., 0.,    0.,
      0.,    0.,    557.,  1313., 2085., 2873., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    581.,  1369., 2173., 2993., 0.,    0.,
      0.,    0.,    605.,  1425., 2261., 3113., 0.,    0.,    0.,    0.,
      629.,  1481., 2349., 3233., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   0.,     0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,     0.,     0.,     0.,     350.,   1006.,
      1790.,  2702.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,  0.,     0.,
      0.,     0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,     0.,
      0.,     830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,     0.,     1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,     1310.,  3502.,  5822.,  8270.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      1470.,  3918.,  6494.,  9198.,  0.,     0.,     0.,     0.,     1630.,
      4334.,  7166.,  10126., 0.,     0.,     0.,     0.,     1790.,  4750.,
      7838.,  11054., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950.,  5166.,  8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582.,  9182.,  12910., 0.,     0.,     0.,
      0.,     2270.,  5998.,  9854.,  13838., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     2430.,  6414.,  10526.,
      14766., 0.,     0.,     0.,     0.,     2590.,  6830.,  11198., 15694.,
      0.,     0.,     0.,     0.,     2750.,  7246.,  11870., 16622., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      2910.,  7662.,  12542., 17550., 0.,     0.,     0.,     0.,     3070.,
      8078.,  13214., 18478., 0.,     0.,     0.,     0.,     3230.,  8494.,
      13886., 19406., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     3390.,  8910.,  14558., 20334., 0.,     0.,
      0.,     0.,     3550.,  9326.,  15230., 21262., 0.,     0.,     0.,
      0.,     3710.,  9742.,  15902., 22190., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     3870.,  10158., 16574.,
      23118., 0.,     0.,     0.,     0.,     4030.,  10574., 17246., 24046.,
      0.,     0.,     0.,     0.,     4190.,  10990., 17918., 24974., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   0.,     0.,     0.,     0.,     190.,
      590.,   1118.,  1774.,  0.,     0.,     0.,     0.,     350.,   1006.,
      1790.,  2702.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,  0.,     0.,
      0.,     0.,     670.,   1838.,  3134.,  4558.,  0.,     0.,     0.,
      0.,     830.,   2254.,  3806.,  5486.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     990.,   2670.,  4478.,
      6414.,  0.,     0.,     0.,     0.,     1150.,  3086.,  5150.,  7342.,
      0.,     0.,     0.,     0.,     1310.,  3502.,  5822.,  8270.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      1470.,  3918.,  6494.,  9198.,  0.,     0.,     0.,     0.,     1630.,
      4334.,  7166.,  10126., 0.,     0.,     0.,     0.,     1790.,  4750.,
      7838.,  11054., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     1950.,  5166.,  8510.,  11982., 0.,     0.,
      0.,     0.,     2110.,  5582.,  9182.,  12910., 0.,     0.,     0.,
      0.,     2270.,  5998.,  9854.,  13838., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     2430.,  6414.,  10526.,
      14766., 0.,     0.,     0.,     0.,     2590.,  6830.,  11198., 15694.,
      0.,     0.,     0.,     0.,     2750.,  7246.,  11870., 16622., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      2910.,  7662.,  12542., 17550., 0.,     0.,     0.,     0.,     3070.,
      8078.,  13214., 18478., 0.,     0.,     0.,     0.,     3230.,  8494.,
      13886., 19406., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     3390.,  8910.,  14558., 20334., 0.,     0.,
      0.,     0.,     3550.,  9326.,  15230., 21262., 0.,     0.,     0.,
      0.,     3710.,  9742.,  15902., 22190., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     3870.,  10158., 16574.,
      23118., 0.,     0.,     0.,     0.,     4030.,  10574., 17246., 24046.,
      0.,     0.,     0.,     0.,     4190.,  10990., 17918., 24974., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}